<?php
/**
 * Este es un helper CakePHP que sirve para dar distintos tipos personalizados de formato
 */

class PresentacionHelper extends Helper
{
    var $helpers=array("Html", "Ajax", "Paginator");

	function titulo($elementos=null)
    {
		$retorno="";

		if (!is_array($elementos))
		{
			if ($elementos==null)
			{
				$elementos=Inflector::camelize($this->params['controller']);
			}
			$elementos=array($elementos);
		}
		if (count($elementos)>0)
		{
	        $retorno.="\n<div id='titulo'>";
	
			foreach ($elementos as $k=>$v)
			{
				if (is_string($v))
				{
					$retorno.="\n<h".($k+1).">{$v}</h".($k+1).">";
				}
			}
			$retorno.="\n</div>";
		}
		return $retorno;
    }

/**
 * Creates a formatted IMG element.
 *
 * @param string $path Path to the image file, relative to the webroot/img/ directory.
 * @param array	$htmlAttributes Array of HTML attributes.
 * @return string
 */
	function image($path, $htmlAttributes = array())
    {
		//siempre las rutas y los archivos van en minusculas
		$path = strtolower($path);

		if (isset($htmlAttributes['alt']) && !isset($htmlAttributes['title'])) 
		{
			$htmlAttributes['title'] = $htmlAttributes['alt'];
		}
		if (isset($htmlAttributes['title']) && !isset($htmlAttributes['alt'])) 
		{
			$htmlAttributes['alt'] = $htmlAttributes['title'];
		}

		$retorno = $this->Html->image($path, $htmlAttributes);
		return $retorno;
    }

    function enlaceHtml($title, $url = null, $htmlAttributes = array(), $confirmMessage = false, $escapeTitle = true)
    {
		if(strstr($title, '<img src="')) //detecto si viene una imagen, hay que escarparlo
			$escapeTitle = false;

		$retorno = $this->Html->link($title, $url, $htmlAttributes, $confirmMessage, $escapeTitle);
		return $retorno;
    }

    function enlaceAjax($title, $url, $options = array(), $confirm = null, $escapeTitle = true)
    {
		if(strstr($title, '<img src="')) //detecto si viene una imagen, hay que escarparlo
			$escapeTitle = false;

        $retorno = $this->Ajax->link($title, $url, $options, $confirm, $escapeTitle);
		return $retorno;
    }    
/*    
	function grilla($accion,$atributos=false,$elementos=false)
	{
		$retorno="";

		if (is_array($atributos) && count($atributos)>0)
		{
			$tmp="";

			foreach ($atributos as $k=>$v)
			{
				$tmp=" {$k}=\"{$v}\"";
			}
			$atributos=$tmp;
		}

		switch ($accion)
		{
			case "header":
			{
				$retorno.="\n<table class='grilla' cellpadding='0' cellspacing='0'>";
				$retorno.="\n<thead>";
				$retorno.="\n<tr{$atributos}>";

				foreach ($elementos as $k=>$v)
				{
					$v=(!is_array($v)?array("label"=>$v):$v);

					$retorno.="\n<th".(isset($v["class"])?" class=\"".$v["class"]."\"":"").">".(isset($v["label"])?$v["label"]:"")."</th>";
				}
				$retorno.="\n</tr>";
				$retorno.="\n</thead>";
 				$retorno.="\n<tbody>";
				break;
			}
			case "body":
			{
				$retorno.="\n<tr{$atributos}>";

				foreach ($elementos as $k=>$v)
				{
					$v=(!is_array($v)?array("label"=>$v):$v);

					$retorno.="\n<td".(isset($v["class"])?" class=\"".$v["class"]."\"":"").">".(isset($v["label"])?$v["label"]:"")."</td>";
				}
				$retorno.="\n</tr>";
				break;
			}
			case "footer":
			{
				$retorno.="\n</tbody>";
				if(!empty($elementos))
				{
					$retorno.="\n<tfoot>";
					$retorno.="\n<tr{$atributos}>";

					foreach ($elementos as $k=>$v)
					{
						$v=(!is_array($v)?array("label"=>$v):$v);

						$retorno.="\n<td".(isset($v["class"])?" class=\"".$v["class"]."\"":"").">".(isset($v["label"])?$v["label"]:"")."</td>";
					}
					$retorno.="\n</tr>";
					$retorno.="\n</tfoot>";
				}
				$retorno.="\n</table>";
				break;
			}
		}
		return $retorno;
	}
*/
	function paginador($accion, $opciones = array())
	{
		$retorno="";

		switch ($accion)
		{
			case "posicion":
			{
				$retorno.="\n<div id='paginador_posicion'>";
				$retorno.="\n<span id='posicion'>";	
				$retorno.="\n".$this->Paginator->counter(array('format'=>'Pagina %page% de %pages%, mostrando %current% registros de %count%'));
				$retorno.="\n</span>";	
				$retorno.="\n</div> <!-- paginador -->";
				break;
			}
			case "navegacion":
			{
				$params=$this->Paginator->params();
				//d($params);
				//$x= array("conditions" => "Auditoria.usuario_id=1");
				$opciones = am($params['options'], $opciones);
				//d($opciones);
				//$opciones = am($url, $opciones);
				//debug($opciones['conditions']);
				//debug(serialize($opciones['conditions']));
				//d(unserialize(serialize($opciones['conditions'])));

				if(!isset($opciones['url']))
				{
					//$opciones['url'] = array('conditions' =>serialize($opciones['conditions']));
					$opciones['url'] = array('conditions' =>$opciones['conditions']);
					//$opciones['url'] = $opciones['conditions'];
				}
				else
				{
					$opciones['url'] = am($opciones['url'], array('conditions' =>$opciones['conditions']));
				}
				//d($opciones);
				$retorno.="\n<div id='paginador_navegacion'>";
				$retorno.="\n<span id='navegacion'>";
				$retorno.="\n<span id='primero'>";

				if (isset($params['page']) && $params['page']>1)
				{
					if(file_exists(WWW_ROOT . "img" . DS . "primero.png"))
						$retorno.="\n".$this->Paginator->link($this->image("primero.png", array("alt"=>"Ir al primer registro")), array('page'=>1), am(array('escape'=>false), $opciones));
					else
						$retorno.="\n".$this->Paginator->link("|<", am(array('page'=>1), $opciones), $opciones);

				}
				else
				{
					if(file_exists(WWW_ROOT . "img" . DS . "primerooff.png"))
						$retorno.= $this->image("primerooff.png");
					else
						$retorno.="\n|&lt;";				
				}
				$retorno.="\n</span>";

				$retorno.="\n<span id='anterior'>";
				if(file_exists(WWW_ROOT . "img" . DS . "anterior.png"))
					$prev = $this->Paginator->prev($this->image("anterior.png", array("alt"=>"Ir al registro anterior")), am(array('escape'=>false), $opciones));
				else
					$prev = $this->Paginator->prev("<", $opciones);
				if (is_null($prev))
					if(file_exists(WWW_ROOT . "img" . DS . "anterior.png"))
						$retorno.= $this->image("anterioroff.png");
					else
						$retorno.="\n&lt;";
				else
					$retorno.="\n" . $prev;
				$retorno.="\n</span>";

				/*
				$retorno.="\n<ul>";

				for ($i=1; $i <= $params['pageCount']; $i++) 
				{
					if ($i == $params['page']) 
					{
						$retorno.="\n<li><strong>".$i."</strong></li>";
					} 
					else 
					{
						$retorno.="\n<li>".$this->Paginator->link($i, array('page'=> $i))."</li>";
					}
				}
				$retorno.="\n</ul>";
				*/

				$retorno.="\n<span id='siguiente'>";
				if(file_exists(WWW_ROOT . "img" . DS . "siguiente.png"))
					$next = $this->Paginator->next($this->image("siguiente.png", array("alt"=>"Ir al siguiente registro")), am($opciones, array('escape'=>false)));
				else
					$next = $this->Paginator->next(">", $opciones);

				if (is_null($next))
					if(file_exists(WWW_ROOT . "img" . DS . "siguienteoff.png"))
						$retorno.= $this->image("siguienteoff.png");
					else
						$retorno.="\n>";
				else
					$retorno.="\n" . $next;
				$retorno.="\n</span>";
				
				$retorno.="\n<span id='ultimo'>";
				if (isset($params['page']) && $params['page']<$params['pageCount'])
				{
					if(file_exists(WWW_ROOT . "img" . DS . "ultimo.png"))
						$retorno.="\n".$this->Paginator->link($this->image("ultimo.png", array("alt"=>"Ir al ultimo registro")), array('page'=>$params['pageCount']), am(array('escape'=>false), $opciones));
					else
						$retorno.="\n".$this->Paginator->link(">|", am(array('page'=>$params['pageCount']), $opciones), $opciones);
				}
				else
				{
					if(file_exists(WWW_ROOT . "img" . DS . "ultimooff.png"))
						$retorno.= $this->image("ultimooff.png");
					else
						$retorno.="\n>|";
				}
				$retorno.="\n</span>";
				$retorno.="\n</span>";
				$retorno.="\n</div>";
				break;
			}
		}
		return $retorno;
	}

	function redondearEsquinas($ubicacion = false)
	{
		$codigo_html = "";

		if ($ubicacion && $ubicacion == "inicio")
		{
			$codigo_html .= "\n<div id='caja'>";
			$codigo_html .= "\n<table class='caja' cellpadding='0' cellspacing='0' width='100%'>";   
			$codigo_html .= "\n<tr>";
			$codigo_html .= "\n<td class='head_izq'></td>";
			$codigo_html .= "\n<td class='head_cen'></td>";
			$codigo_html .= "\n<td class='head_der'></td>";
			$codigo_html .= "\n</tr>";
			$codigo_html .= "\n<tr>";
			$codigo_html .= "\n<td class='body_izq'></td>";
			$codigo_html .= "\n<td class='body_cen'>";
		}
		elseif ($ubicacion && $ubicacion == "fin")
		{
			$codigo_html .= "\n</td>";
			$codigo_html .= "\n<td class='body_der'></td>";
			$codigo_html .= "\n</tr>";
			$codigo_html .= "\n<tr>";
			$codigo_html .= "\n<td class='foot_izq'></td>";
			$codigo_html .= "\n<td class='foot_cen'></td>";
			$codigo_html .= "\n<td class='foot_der'></td>";
			$codigo_html .= "\n</tr>";
			$codigo_html .= "\n</table>";
			$codigo_html .= "\n</div>";
		}
		return $codigo_html;
		
	}


	function redondearEsquinasx($ubicacion = false)
	{
		$codigo_html = "";

		if ($ubicacion && $ubicacion == "inicio")
		{
			$codigo_html .= "\n<div class='t'>";
			$codigo_html .= "\n<div class='b'>";
			$codigo_html .= "\n<div class='l'>";
			$codigo_html .= "\n<div class='r'>";
			$codigo_html .= "\n<div class='bl'>";
			$codigo_html .= "\n<div class='br'>";
			$codigo_html .= "\n<div class='tl'>";
			$codigo_html .= "\n<div class='tr'>";
		}
		elseif ($ubicacion && $ubicacion == "fin")
		{
			$codigo_html .= "\n</div></div></div></div></div></div></div></div>";
		}
		return $codigo_html;
		
	}


/**
 * Retorna un tag <span> que puede ser editable via ajax.
 *
 * @param string $texto El texto que debe mostrarse dentro del tag <span>
 * @param array $opciones Deben especificarse 3 componentes:
 *			url		: Acion de un controlador donde se debe postear, esta accion recibira dos parametros (el id enviado y el contenido post-edicion)
 *			id		: Id que se desee para iedntificar que componente se ha editado. Debe ser unico
 *			update	: Div que debe actualizarse como resultado de la ejecucion ajax
 * @return string HTML con <span> editable
 */

	function edicionEnLinea($texto = "", $opciones)
	{
		if(!is_string($texto) || empty($texto))
		{
			$texto="&nbsp;&nbsp;&nbsp;";
		}
		if (isset($opciones['url']) && isset($opciones['update']) && isset($opciones['id']))
		{
			$return = "<span title='Presione aqui para modificar el valor' onclick=\"editarEnLinea(this, '" . $opciones['url'] . "', '" . $opciones['update'] . "');\" style='cursor:pointer;' id='" . $opciones['id'] . "'>" . $texto . "</span>";
			return $return;
		}
		else
			return "";
	}
}

?>
